package com.glsc.ngateway.common.base.converter.ldap;

import com.glsc.ngateway.common.api.ldap.dto.LdapEhrEmpDto;
import com.glsc.ngateway.common.base.domain.mysql.gateway.ldap.LdapEhrEmp;
import org.springframework.lang.Nullable;
import org.springframework.util.CollectionUtils;

import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

public class LdapEhrEmpConverter {
    @Nullable
    public static LdapEhrEmp dto2Domain(LdapEhrEmpDto dto) {
        return Objects.isNull(dto) ? null : LdapEhrEmp.builder()
                .badge(dto.getBadge())
                .name(dto.getName())
                .email(dto.getEmail())
                .depid(dto.getDepid())
                .title(dto.getTitle())
                .jobId(dto.getJobId())
                .jobTitle(dto.getJobTitle())
                .mobile(dto.getMobile())
                .status(dto.getStatus())
                .reportto(dto.getReportto())
                .oaUserId(dto.getOaUserId())
                .oaCompId(dto.getOaCompId())
                .messagerUrl(dto.getMessagerUrl())
                .deptinfo(LdapEhrDeptConverter.dto2Domain(dto.getDeptinfo()))
                .build();
    }

    @Nullable
    public static List<LdapEhrEmp> dto2Domain(List<LdapEhrEmpDto> dto) {
        return CollectionUtils.isEmpty(dto) ? null: dto.stream().map(LdapEhrEmpConverter::dto2Domain).collect(Collectors.toList());
    }

    @Nullable
    public static LdapEhrEmpDto domain2Dto(LdapEhrEmp domain) {
        return Objects.isNull(domain) ? null : LdapEhrEmpDto.builder()
                .badge(domain.getBadge())
                .name(domain.getName())
                .email(domain.getEmail())
                .depid(domain.getDepid())
                .title(domain.getTitle())
                .jobId(domain.getJobId())
                .jobTitle(domain.getJobTitle())
                .mobile(domain.getMobile())
                .status(domain.getStatus())
                .reportto(domain.getReportto())
                .oaUserId(domain.getOaUserId())
                .oaDeptId(domain.getOaDeptId())
                .oaCompId(domain.getOaCompId())
                .messagerUrl(domain.getMessagerUrl())
                .deptinfo(LdapEhrDeptConverter.domain2Dto(domain.getDeptinfo()))
                .build();
    }

    @Nullable
    public static List<LdapEhrEmpDto> domain2Dto(List<LdapEhrEmp> domain) {
        return CollectionUtils.isEmpty(domain) ? null: domain.stream().map(LdapEhrEmpConverter::domain2Dto).collect(Collectors.toList());
    }
}
